package a4_queue;
import java.util.ArrayDeque;
import java.util.Deque;
/**
 * 测试双端队列作为队列和栈的不同用法
 */
public class TestDeque {
    public static void main(String[] args) {
        //作为队列的用法
        Deque<Integer> queue = new ArrayDeque<>();
        //入队操作
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        queue.offer(4);
        // 1 -> 2 -> 3 -> 4
        System.out.println("此时的队首元素为：" + queue.peek()); // 1
        //出队操作
        queue.poll();
        // 2 -> 3 -> 4
        System.out.println("原队首出队后的队首元素为：" + queue.peek()); // 2

        //作为栈的用法
        Deque<Integer> stack = new ArrayDeque<>();
        //入栈操作
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        //  4  栈顶
        //  3
        //  2
        //  1
        System.out.println("此时的栈顶元素为：" + stack.peek()); // 4
        //出栈操作
        stack.pop();
        //  3  栈顶
        //  2
        //  1
        System.out.println("原栈顶出栈后的栈顶元素为：" + stack.peek()); // 3
    }
}
